
var contadorPreguntas;

$(document).ready(function(){
  getBancoPreguntasXcategoria();
});

//Consulta de Perfiles.
function consultarPerfiles() {
    var url = variablesGlobales.server+variablesGlobales.URL.urlconsultaPerfiles;
    var param = {};
    var perfil = {};
    sendServiceJSON(url, param, consultaPerfilesSuccess, null, null);
}


function consultaPerfilesSuccess(originalRequest){
    var result =  originalRequest;
    crearListaPerfiles(result);
}

// creamos una variable que inicie en 1 que contara todos los th dinamicos
    var cantidad_columnas=1;
    var lista_perfiles;
    
function crearListaPerfiles(data){

    var contenido =$('#contenidoIntranet_evaluaciones');
    contenido.empty();
    contenido.find('h1').addClass('oculto');
    var keyList = [];
    contenido.html('<h1>No se encontraron registros!</h1>');
    var divSlideBotones = $(document.createElement('div')).appendTo(contenido);
    divSlideBotones.addClass("divSlide");
      var divAgregarCategoria = $(document.createElement('div')).appendTo(divSlideBotones);
      divAgregarCategoria.addClass("divAgregarCategoria");
        var inputAgregarCategoria = $(document.createElement('input')).appendTo(divAgregarCategoria);
        inputAgregarCategoria.attr("id",'addcategoriaText');
        inputAgregarCategoria.attr("placeholder","NOMBRE CATEGORIA");
        var inputAgregarCapa = $(document.createElement('input')).appendTo(divAgregarCategoria);
        inputAgregarCapa.attr("id",'addcategoriaCapaText');
        inputAgregarCapa.attr("placeholder","CAPA QUE PERTENECE");
        var inputAgregarProveedor = $(document.createElement('input')).appendTo(divAgregarCategoria);
        inputAgregarProveedor.attr("id",'addcategoriaProveedorText');
        inputAgregarProveedor.attr("placeholder","PROVEEDOR");
        var btnCancelarCategoria = $(document.createElement('button')).appendTo(divAgregarCategoria);
        btnCancelarCategoria.addClass("cancelarCategoria");
        btnCancelarCategoria.html('<img src="modules/principal/resources/images/close.png">');
        btnCancelarCategoria.click(function(){
          divAgregarCategoria.switchClass('mostarAgregarCategoria','divAgregarCategoria',"slow");
        });

        var btnAceptarCategoria = $(document.createElement('button')).appendTo(divAgregarCategoria);
        btnAceptarCategoria.addClass('btnagregarCategoria');
        btnAceptarCategoria.html('ACEPTAR CATEGORIA');
        btnAceptarCategoria.click(function(){
            var param={};
            var categoria={};
            categoria.nombreCategoria=$("#addcategoriaText").val().trim();
            categoria.capa=$("#addcategoriaCapaText").val().trim();
            categoria.proveedor=$("#addcategoriaProveedorText").val().trim();                        
            categoria.nroPreguntas="0";
            param.categoria=categoria;
            sendServiceJSONSync(variablesGlobales.server+variablesGlobales.URL.urlinsertarcategoria,param,function(){
              consultarCategorias();
            },null,null);
        });

      var divBotones = $(document.createElement('div')).appendTo(divSlideBotones);
      divBotones.addClass("divBotones");
        var btnAgregarPerfiles = $(document.createElement('button')).appendTo(divBotones);
        btnAgregarPerfiles.addClass('btnagregarPerfil');
        btnAgregarPerfiles.html('AGREGAR PERFIL');
        btnAgregarPerfiles.click(function(){
          divAgregarCategoria.switchClass('divAgregarCategoria','mostarAgregarPerfil',"slow");
        });

        var btnAgregarCategoria = $(document.createElement('button')).appendTo(divBotones);
        btnAgregarCategoria.addClass('btnagregarCategoria');
        btnAgregarCategoria.html('AGREGAR CATEGORIA');
        btnAgregarCategoria.click(function(){
          divAgregarCategoria.switchClass('divAgregarCategoria','mostarAgregarCategoria',"slow");
        });

      var divAgregarPerfil = $(document.createElement('div')).appendTo(divSlideBotones);
      divAgregarPerfil.addClass("divAgregarPerfil");
        var inputAgregarPerfiles = $(document.createElement('input')).appendTo(divAgregarPerfil);
        inputAgregarPerfiles.attr('id','addperfilText');
        var btnCancelarPerfil = $(document.createElement('button')).appendTo(divAgregarPerfil);
        btnCancelarPerfil.addClass("cancelarPerfil");
        btnCancelarPerfil.html('<img src="modules/principal/resources/images/close.png">');
        btnCancelarPerfil.click(function(){
          divAgregarCategoria.switchClass('mostarAgregarPerfil','divAgregarCategoria',"slow");
        });

        var btnAceptarPerfil = $(document.createElement('button')).appendTo(divAgregarPerfil);
        btnAceptarPerfil.addClass('btnagregarCategoria');
        btnAceptarPerfil.html('ACEPTAR PERFIL');
        btnAceptarPerfil.click(function(){
          var param={};
          var perfil={};
          perfil.nombrePerfil=$("#addperfilText").val().trim();
          perfil.categorias=[];
          param.perfil=perfil;
          sendServiceJSONSync(variablesGlobales.server+variablesGlobales.URL.urlinsertarPerfil,param,actualizoPerfilSuccess,null,null);
        });


    //debugger;// hacemos el debugger para saber que elemento de la base de datos iteramos
    // CABECERA DE LA TABLA EVALUACIONES
    var marco = $(document.createElement('div')).appendTo(contenido);
    marco.addClass('marco_evaluacion');
    var table = $(document.createElement('table')).appendTo(marco);
    var thead = $(document.createElement('thead')).appendTo(table);
    var tr = $(document.createElement('tr')).appendTo(thead);
    var th = $(document.createElement('th')).appendTo(tr);
    th.html('<input class="buscador" placeholder="Filtre las categorias"/><img src="modules/principal/resources/images/lupa-text.png" />');

    // inicializamos en 1 que contara todos los th dinamicos
    cantidad_columnas=1;
    //iteramos la data.perfiles- ya sabemos que data.perfiles tiene dos item(pos,item)
    lista_perfiles=data.perfiles;
    $.each(data.perfiles,function(pos,item){
        th = $(document.createElement('th')).appendTo(tr);
    // le pasamos a cada th creado por la iteracion de la data un item,y el nombrePerfil=(nombre base de datos)
        th.html("<label class='padre_"+(pos+1)+" "+item.nombrePerfil.replace(/\s/g,'')+"'>"+item.nombrePerfil+"</label>");    
        th.find("label").data("dataPerfil",item);
        cantidad_columnas++;// aumentamos 1 a la variable de th columnas por cada iteración

    });  

    var tr = $(document.createElement('tr')).appendTo(thead);
    tr.addClass("subthead");
    th = $(document.createElement('th')).appendTo(tr);
    th.html("<label>CANTIDAD DE PREGUNTAS</label>");
    for(var i=1;i<cantidad_columnas;i++){
      th = $(document.createElement('th')).appendTo(tr);
      th.html("<label class='padre_"+(i)+ " total_preguntas_perfil'>TOTAL</label>");
    }
    
    consultarCategorias();
}
  // AGREGAR PERFILES
  $('#contenidoIntranet_evaluaciones .btnagregarPerfil').click(function(){
      var divAgregar = $(document.createElement('div')).appendTo(contenido);
      divAgregar.addClass('divAgregar');
  });

   //Consulta de Categorias.
function consultarCategorias() {
    var url = variablesGlobales.server+variablesGlobales.URL.urlconsultarCategorias;
    var param = {};
    var category = {};
    sendServiceJSON(url, param, consultaCategoriasSuccess, null, null);
}


function consultaCategoriasSuccess(originalRequest){
    var result =  originalRequest;
    crearListaCategorias(result);
}

function crearListaCategorias(data){
  var url = variablesGlobales.server+variablesGlobales.URL.urlmodificarPerfil;
  var contenido =$('#contenidoIntranet_evaluaciones');
  var table=contenido.find("table");
  table.find("tbody").empty();
       // CREAMOS EL TBODY DE LA TABLA 
  var tbody = $(document.createElement('tbody')).appendTo(table);

  $.each(data.categorias,function(pos,item){
     var tr = $(document.createElement('tr')).appendTo(tbody);
     tr.addClass("filtro");
     var th = $(document.createElement('th')).appendTo(tr);
     th.html(item.nombreCategoria + "<span title='Cantidad de Preguntas'>"+obtenerCantidadPreguntas(item.nombreCategoria.replace(/\s/g,''))+"</span>");
     var div = $(document.createElement('div')).appendTo(th);
     div.addClass('proveedor_categoria');
     div.html(item.proveedor+ ' -'+ item.capa);   
     th.data("dataCategoria",item);
     th.addClass(item.nombreCategoria.replace(/\s/g,''));
     for(var i=1;i<cantidad_columnas;i++){
       var td = $(document.createElement('td')).appendTo(tr);
       td.html('<input class="padre_'+i+' '+item.nombreCategoria.replace(/\s/g,'')+'"></input>');
       td.find("input").focusout(function(){
  
        // ACTUALIZAR PERFIL 
          var perfil=table.find("thead").find("."+$(this).attr("class").split(" ")[0]).data("dataPerfil");
          var categoria=item;
          categoria.nroPreguntas=($(this).val()=="")?0:$(this).val();
          var agregoNuevo=true;
          $.each(perfil.categorias,function(posCategoria,itemCategoria){
              if(itemCategoria.nombreCategoria === categoria.nombreCategoria){
                agregoNuevo=false;
                itemCategoria.nroPreguntas=parseInt(categoria.nroPreguntas);
              }
          });

          if(agregoNuevo) {
              perfil.categorias.push(categoria);
          }
          var param={};
          param.perfil= perfil;
          sendServiceJSON(url,param,actualizoPerfilSuccess,null,null);
       });
      }
  });

  //BUSCADOR CATEGORIAS
   
    $('#contenidoIntranet_evaluaciones .buscador').keyup(function(){
        var flag=false;
        if($(this).val()===""){
          flag=true;
          contenido.find('tr').removeClass("oculto");
          contenido.find('h1').addClass('oculto');
        }else{
          $.each(contenido.find('tr.filtro'),function(position,item){
            if($(item).html().toLowerCase().indexOf($('#contenidoIntranet_evaluaciones .buscador').val().toLowerCase())==-1){
                $(item).addClass('oculto');
            }else{
              $(item).removeClass('oculto');
              flag=true;
            }
          });

          if(flag){
                contenido.find('h1').addClass("oculto");
            }else{
                contenido.find('h1').removeClass("oculto");
            }
        };
    });
    

// CARGAR PERFILES CON CANTIDAD DE PREGUNTAS POR CATEGORIA
  $.each(lista_perfiles,function(pos,item){
      var numPadre=-1;
      var totalPregunta=0;
      var labelTH=$('#contenidoIntranet_evaluaciones thead th label');
      $.each(labelTH,function(posLabel,itemLabel){
          if($(this).hasClass(item.nombrePerfil.replace(/\s/g,''))){
            numPadre=$(this).attr("class").replace(" "+item.nombrePerfil.replace(/\s/g,''),"");
          }
      });

      if(numPadre!=-1){
          $.each(item.categorias,function(posCat,itemCat){
             var numeroPreguntas=(itemCat.nroPreguntas===null)?"0":itemCat.nroPreguntas;
              $("."+numPadre+"."+itemCat.nombreCategoria.replace(/\s/g,'')).val(numeroPreguntas);
              totalPregunta+=parseInt(numeroPreguntas);
          }); 
      }

      $("#contenidoIntranet_evaluaciones thead .subthead ."+numPadre).html(totalPregunta);
  });
}

function actualizoPerfilSuccess(datos){
  console.log("Se actualizo la lista de perfiles!");
  consultarPerfiles();
}

//MOSTRAR EVALUACIONES PRESENTADAS

var listaEvaluacionesPresentadas=[];

function cargarListaPresentadas(){

    var contenido =$('#contenidoIntranet_evaluaciones');
    contenido.empty();
     var param={};
    sendServiceJSONSync(variablesGlobales.server+variablesGlobales.URL.urlConsultarEvaluaciones,param,function(data){
        listaEvaluacionesPresentadas=null;
        if(data.mensaje=="Exitoso"){
            listaEvaluacionesPresentadas=data.evaluaciones;
        }else{
            notify("no hay evaluaciones disponibles",1500);
        }
    },null,null);
    //CREACIÓN DE LA TABLA PARA LISTAR LAS EVALUACIONES REALIZADAS
    var marco = $(document.createElement('div')).appendTo(contenido);
    marco.addClass('marco_evaluacion_lista');
    var table = $(document.createElement('table')).appendTo(marco);
    var thead = $(document.createElement('thead')).appendTo(table);
    var h2 = $(document.createElement('h2')).appendTo(table);
    h2.html('No se encontraron registros!!');
    h2.addClass('oculto');
    var tr = $(document.createElement('tr')).appendTo(thead);
    var th = $(document.createElement('th')).appendTo(tr);
    th.html('<input class="buscador_lista_eva" placeholder="Filtre las evaluaciones"/><img src="modules/principal/resources/images/lupa-text.png" /><label class="tituloEvalu">LISTA DE EVALUACIONES PRESENTADAS</label>');
    th.attr("colspan","4");
    var tr = $(document.createElement('tr')).appendTo(thead);
    var td = $(document.createElement('td')).appendTo(tr);
    td.html('<label>APELLIDO</label>');
    var td = $(document.createElement('td')).appendTo(tr);
    td.html('<label>NOMBRE</label>');
    var td = $(document.createElement('td')).appendTo(tr);
    td.html('<label>CORREO</label>');
    var td = $(document.createElement('td')).appendTo(tr);
    td.html('<label>PERFIL</label>');
    
       //CONTENIDO DE LA TABLA
       var tbody = $(document.createElement('tbody')).appendTo(table);
       $.each(listaEvaluacionesPresentadas,function(poslista,item){
       var tr = $(document.createElement('tr')).appendTo(tbody);
       tr.addClass("filtro_lista_evaluaciones");
       var td = $(document.createElement('td')).appendTo(tr);
       td.html(item.usuario.primerapellido);
       var td = $(document.createElement('td')).appendTo(tr);
       td.html(item.usuario.primernombre);
       var td = $(document.createElement('td')).appendTo(tr);
       td.html(item.usuario.email);
       var td = $(document.createElement('td')).appendTo(tr);
       td.html(item.perfil.nombrePerfil+'<img src="modules/principal/resources/images/lupa-text.png" />');
       td.find("img").addClass("verEvalu");

      //BUSCADOR DE EVALUACIONES PRESENTADAS

    $('#contenidoIntranet_evaluaciones .buscador_lista_eva').keyup(function(){
        var flag=false;
        if($(this).val()===""){
          flag=true;
          contenido.find('tr').removeClass("oculto");
          contenido.find('h2').addClass('oculto');
        }else{
          $.each(contenido.find('tr.filtro_lista_evaluaciones'),function(position,item){
            if($(item).html().toLowerCase().indexOf($('#contenidoIntranet_evaluaciones .buscador_lista_eva').val().toLowerCase())==-1){
                $(item).addClass('oculto');
            }else{
              $(item).removeClass('oculto');
              flag=true;
            }
          });
          if(flag){
                contenido.find('h2').addClass("oculto");
            }else{
                contenido.find('h2').removeClass("oculto");
            }
        };
    });


       // LLAMADO A EL RESULTADO DE LA EVALUACIÓN
        td.find('img').click(function(){
            var verificar=$('<div id="verificar" class="oculto div_listar_opc"></div>').appendTo('body');
            var btnClosed=$('<button class="boton_dialog_cerrar"><img src="modules/principal/resources/images/close.png"></button>').appendTo(verificar);
            var NombreUsuario=$('<div class="oculto"></div>').html((item.usuario.primerapellido+", "+item.usuario.primernombre).reducirCadena(40)).appendTo(verificar);
            var NombreUsuario=$('<div id="NombreUsuario" class="NombreUsuario"></div>').html((item.usuario.primerapellido+", "+item.usuario.primernombre).reducirCadena(40)).appendTo(verificar);
            var NombreUsuario=$('<div id="NombreUsuario"></div>').attr("title",item.usuario.primerapellido+", "+item.usuario.primernombre).appendTo(verificar);
            var correoUsuario=$('<div id="correoUsuario"></div>').html(item.usuario.email).appendTo(verificar);
            var letra_porcentaje=$('<div id="letra_porcentaje">Porcentaje Final</div>').appendTo(verificar);
            var porcentaje=$('<div id="porcentaje"></div>').html("50%").appendTo(verificar);
            var cantidadCorrecta=$('<div id="cantidadCorrecta"></div>').html(2).appendTo(verificar);
            var slasch=$('<div id="slasch"> / </div>').appendTo(verificar);
            var totalPreguntas=$('<div id="totalPreguntas"></div>').html(item.preguntas.length).appendTo(verificar);
            var verificar_div=$('<div id="verificar_div"></div>').appendTo('body');
            mostrarDetallePresentada(item);
        });
    });
  };

function validarPregunta(pregunta){
  $('.boton_dialog_cerrar').click(function(){$('#verificar, #verificar_div').remove()});
    var valida=true;
    if(pregunta.lista_selecionadas!=null){
         if(pregunta.lista_selecionadas.length!=pregunta.correct.length){
          valida=false;
         }else{
             $.each(pregunta.correct,function(pos,item){
                 if(pregunta.lista_selecionadas[pos]!=item){
                     valida=false;
                 }
             })
         }
    }else{
        valida=false;
    }
    return valida;
}

function mostrarDetallePresentada(item){
    var cantidadCorrectas=0;
    $("#verificar_div").empty();
    $.each(item.preguntas,function(posPregunta,itemPregunta){
        var div=$(document.createElement("div")).appendTo("#verificar_div");
        div.addClass("div_preguntasPresentadas");
        var img =$(document.createElement("img")).appendTo(div);


        if(validarPregunta(itemPregunta)){
            cantidadCorrectas++;
            img.attr("src","modules/principal/resources/images/check.png");
            img.attr("width","20px");
        } else{
            img.attr("src","modules/principal/resources/images/bad.png");
            img.attr("width","20px");
        }

        var span=$(document.createElement("span")).appendTo(div);
        span.addClass("font_normal_07em_black");
        span.html((parseInt(posPregunta)+1)+' - '+itemPregunta.pregunta);

        var br=$(document.createElement("br")).appendTo(div);

        $.each(itemPregunta.respuestas,function(posRespuesta,itemRespuestas){
            var input=$(document.createElement("input")).appendTo(div);
            input.attr("type","checkbox");
            input.attr("id",posPregunta+"_"+(parseInt(posRespuesta)+1));
            input.attr("disabled",true);
            input.prop('checked', $("#"+this.id+"_corr").is(':checked'));

            var label=$(document.createElement("label")).appendTo(div);
            label.attr("for",posPregunta+"_"+(parseInt(posRespuesta)+1));
            label.html(itemRespuestas);
            label.addClass(posPregunta+"_"+(parseInt(posRespuesta)+1));
            var br=$(document.createElement("br")).appendTo(div);

            $.each(itemPregunta.correct,function(posR_correct,itemR_correct){
                $("."+posPregunta+"_"+itemR_correct).addClass("correcta");
            });

            $.each(itemPregunta.lista_selecionadas,function(posR_select,itemR_select){
                $("#"+posPregunta+"_"+itemR_select).prop('checked',true);
            });
        });

    });

    $("#cantidadCorrecta").html(cantidadCorrectas);
    $("#Porcentaje").html(String(Math.round((parseInt(cantidadCorrectas)*parseInt(100)/parseInt(item.preguntas.length))))+"%");
    $("#verificar").removeClass("oculto");
    $("#evaluaciones_presentadas").addClass("oculto");
}
// consultar banco de preguntas
 function getBancoPreguntasXcategoria(){
     var param={}; 
     sendServiceJSON_noGlobal(variablesGlobales.server+variablesGlobales.URL.urlconsultarBancoPreguntas,param,getBancoPreguntasXcategoriaSuccess,null,null)
 }

var bancoCantPregXcate =[];
  function getBancoPreguntasXcategoriaSuccess(data){
    if (data.preguntas!= null) {
        $.each(data.preguntas,function(posPregunta,itemPregunta){
          var posEncontrada=validarExistenciaCategoria(itemPregunta.categoria.replace(/\s/g,''));
            if(posEncontrada!=-1){
               bancoCantPregXcate[posEncontrada].nroPreguntas++;
            }else{
               var objNew={
                  categoria:itemPregunta.categoria.replace(/\s/g,''),
                  nroPreguntas:1
               };
               bancoCantPregXcate.push(objNew);
            }

         });
    }
  }

function validarExistenciaCategoria(categoria){
    for(var i=0;i< bancoCantPregXcate.length;i++){
      if(bancoCantPregXcate[i].categoria.replace(/\s/g,'')===categoria.replace(/\s/g,'')){
        return i;
      }
    }
    return -1;
}


function obtenerCantidadPreguntas(categoria){
    for(var i=0;i< bancoCantPregXcate.length;i++){
      if(bancoCantPregXcate[i].categoria.replace(/\s/g,'')===categoria.replace(/\s/g,'')){
        return bancoCantPregXcate[i].nroPreguntas;
      }
    }
    return 0;
}